package main

import (
	"log"
	"think/config"
	"think/core"
	"think/database"
	"think/middleware"
	"think/route"
)

func main() {
	// 加载配置
	config.LoadConfig()

	// 初始化数据库连接
	err := database.InitDB()
	if err != nil {
		log.Fatalf("数据库连接失败: %v", err)
	}
	defer database.CloseDB()

	// 创建应用实例
	app := core.NewApp()

	// 使用中间件
	app.Use(middleware.LoggerMiddleware)

	// 获取路由器
	router := app.Router()

	// 创建自动路由注册器
	autoRouter := route.NewAutoRouter(router)

	// 自动扫描控制器包并注册所有控制器
	controllerPackage := "app/controller"
	err = autoRouter.RegisterAllControllersInPackage(controllerPackage)
	if err != nil {
		log.Printf("自动注册控制器失败: %v", err)
	} else {
		log.Println("所有控制器已自动发现并注册完成")
	}

	// 输出已注册的路由数量
	controllerTypes := autoRouter.GetControllerTypes()
	log.Printf("共注册了 %d 个控制器类型", len(controllerTypes))

	// 启动服务器
	app.Run(":8081")
}
